package com.zxgj.datadirect.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zxgj.datadirect.entity.DataDirectOuterApply;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 外来申请Mapper接口
 * 
 * @author ruoyi
 */
@Mapper
public interface DataDirectOuterApplyMapper extends BaseMapper<DataDirectOuterApply> {

    /**
     * 根据申请单号查询外来申请
     * @param applyNo 申请单号
     * @return 外来申请信息
     */
    DataDirectOuterApply selectByApplyNo(@Param("applyNo") String applyNo);

    /**
     * 根据目标机构编码查询待审批的外来申请
     * @param targetOrgCode 目标机构编码
     * @return 外来申请列表
     */
    List<DataDirectOuterApply> selectPendingByTargetOrg(@Param("targetOrgCode") String targetOrgCode);

    /**
     * 分页查询外来申请
     * @param page 分页参数
     * @param targetOrgCode 目标机构编码
     * @param approveStatus 审批状态
     * @return 分页结果
     */
    Page<DataDirectOuterApply> selectOuterApplyPage(Page<DataDirectOuterApply> page, 
                                                   @Param("targetOrgCode") String targetOrgCode,
                                                   @Param("approveStatus") Integer approveStatus);

    /**
     * 批量更新审批状态
     * @param applyNos 申请单号列表
     * @param approveStatus 审批状态
     * @param approveOpinion 审批意见
     * @param approveUser 审批人
     * @return 更新条数
     */
    int updateApproveStatus(@Param("applyNos") List<String> applyNos, 
                           @Param("approveStatus") Integer approveStatus,
                           @Param("approveOpinion") String approveOpinion,
                           @Param("approveUser") String approveUser);

    /**
     * 统计待审批数量
     * @param targetOrgCode 目标机构编码
     * @return 待审批数量
     */
    int countPendingByTargetOrg(@Param("targetOrgCode") String targetOrgCode);
}
